home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / maximus / stbar20.zip / STARBAR.MH < prev    next >
Text File  |  1996-04-12  |  14KB  |  362 lines

  1. ////////////////////////////////////////////////////////////////////////////
  2. //
  3. // StarBar V2.00 Include File (!)1996 Larry Monte / StarLab Systems SoftWare
  4. //
  5. ////////////////////////////////////////////////////////////////////////////
  6.  
  7. ///////////////////////Terminology Explanations/////////////////////////////
  8. //
  9. // About un-commenting/commenting-out:
  10. // -----------------------------------
  11. //
  12. // When talking about commenting-out, it refers to disabling one of the
  13. // #defines below.
  14. // To comment out a #define, simply place "//" (without quotes) before
  15. // the #define.
  16. // To un-comment, remove the "//"'s (without quotes) which appear before
  17. // the #define.
  18. //
  19. ////////////////////////////////////////////////////////////////////////////
  20.  
  21. ////////////-=The Following Defines !MUST! Be Changed By YOU!=-/////////////
  22. //           !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  23.  
  24. ////////////////////////////////////////////////////////////////////////////
  25. // Define your StarBar path...I suggest making a separate directory rather
  26. // than having the main StarBar files in your /max/m directory. Be sure to
  27. // use double \\'s in your path, and don't forget to include the trailing
  28. // \\'s
  29.  
  30. #define STARBAR_PATH        "C:\\max\\starbar\\"
  31.  
  32. ////////////////////////////////////////////////////////////////////////////
  33. // One of the following 2 defines must be uncommented. It determines the
  34. // type of operating system you are using. WIN95 users should define DOS..
  35. // Default is DOS
  36.  
  37. #define DOS
  38. // #define OS2
  39.  
  40. ////////////////////////////////////////////////////////////////////////////
  41. // The ACCESS define sets the minimum access required for users to use the
  42. // TAG/DL functions of StarBar. With this, you can have Transient users
  43. // browse with StarBar, but they would be unable to TAG or DL until their
  44. // access is raised to equal or above what is defined here.
  45. // You can use any of: > < <> >= <= = in this define, but is best left at
  46. // >=
  47. //
  48. // EG: ">= Normal "
  49. //               ^
  50. // NOTE: Be sure to include the trailing space within the quotes!
  51. //
  52.  
  53. #define ACCESS              ">= Limited "
  54.  
  55. ////////////////////////////////////////////////////////////////////////////
  56. // The KEY define works with STTOG. With STTOG in your file menu, users
  57. // can select if they want to use STARBAR or the canned file listing.
  58. // This can be set to any valid access key used by Maximus. Be sure
  59. // to select a key not being used by anything else and that it's the same
  60. // key defined in STTOG.
  61.  
  62. #define KEY                 "O"
  63.  
  64. ////////////////////////////////////////////////////////////////////////////
  65. // The DO_LOCAL_DL keyword allows SysOps to use the DL command to copy files
  66. // to a specified dir. If you don't need (or want) this ability, comment
  67. // this define out.
  68.  
  69. #define DO_LOCAL_DL
  70.  
  71. ////////////////////////////////////////////////////////////////////////////
  72. #ifdef DO_LOCAL_DL    // <<--DON'T TOUCH THIS LINE!!!!!
  73. ////////////////////////////////////////////////////////////////////////////
  74. // Define a default path you wish to put your files using the DL command.
  75. // Note that you are also prompted to override this path at time of DL
  76. // Be sure to use double "\\"'s and include the trailing "\\"'s
  77.  
  78. #define LOCAL_DL_PATH  "C:\\atemp\\"
  79.  
  80. ////////////////////////////////////////////////////////////////////////////
  81. #endif                // <<--DON'T TOUCH THIS LINE EITHER!!!!!
  82.  
  83. ////////////////////////////////////////////////////////////////////////////
  84. /////////////////////////-=Optional Changes=-///////////////////////////////
  85. //
  86. // This section includes optional changes. If this is the first time setting
  87. // up StarBar, you should quit here, and worry about these changes later.
  88. //
  89. ////////////////////////////////////////////////////////////////////////////
  90.  
  91. ////////////////////////////////////////////////////////////////////////////
  92. // If the following define is commented out, StarBar will only highlight the
  93. // filename. If left uncommented, StarBar will highlight all the file info
  94. // (filename, size, date)
  95.  
  96. #define HILIGHT_ALL
  97.  
  98. ////////////////////////////////////////////////////////////////////////////
  99. // The DO_VIEW define tells Starbar if you intend to use external files
  100. // for the V)iew functions of Starbar. With this, users can inspect DIZ,
  101. // TXT, DOC, PRN, and any instance of READ.ME files....before they DL them!
  102. // If this define is commented out, StarBar will expand the entire FILES.BBS
  103. // description, and all external file inspection will be disabled.
  104.  
  105. #define DO_VIEW
  106.  
  107. ////////////////////////////////////////////////////////////////////////////
  108. // Define how many characters you would like to use in your DL counter.
  109. // I suggest using _at least_ 2 places ("[ 9]") so that the DL counter is
  110. // good up to 99. If you have a file that has been DL'ed more than 99
  111. // times then three spaces is a good idea. I use 4 places here ("[   9]")
  112. // giving me upward compatability up to 9999 DL's on any given file.
  113. // If you don't want to use a DL counter, define zero.
  114.  
  115. #define COUNT_OFFSET        4
  116.  
  117. ////////////////////////////////////////////////////////////////////////////
  118. // MAX_LINES, as set below will set the screen length display according to
  119. // what the user's screen length is. However, if you find you get a lot
  120. // of complaints about the lightbar screwing up (usually Windows users)
  121. // you can set this to 24 (a happy medium for most people) to use a set
  122. // display length
  123.  
  124. #define MAX_LINES           usr.len
  125.  
  126. ////////////////////////////////////////////////////////////////////////////
  127. // I recommend leaving this alone until you are certain StarBar is working
  128. // correctly. It basically logs some info that might be useful in tracking
  129. // some setup problems. Some basic activity is also logged.
  130.  
  131. #define DO_LOG
  132.  
  133. ////////////////////////////////////////////////////////////////////////////
  134. // The following 2 defines determine what kind of brackets are to be used
  135. // for your DL counter. [,{,(,<, are all acceptable.
  136. // Note: If you defined COUNT_OFFSET to zero above, these defines mean
  137. // nothing...
  138.  
  139. #define ST_COUNT_LBRACKET   "["
  140. #define ST_COUNT_RBRACKET   "] "   //<-- include a trailing space with this
  141.                                    //    one
  142. ////////////////////////////////////////////////////////////////////////////
  143. // The following 4 KEY_* defines do 2 things. 1)Determines the hotkeys to
  144. //                                              be used.
  145. //                                            2)Prints the Keys in the
  146. //                                              command line.
  147. // Which is to say, if you changed "Xx" to "Qq", then "Q" would be used
  148. // to exit StarBar, and the change would be noted in the command line.
  149. // Be sure not to duplicate any of the KEY_* defines. (There are more
  150. // further down in this file, which can't be changed)
  151. // Also, be sure to include _BOTH_ uppercase and lowercase as shown below.
  152. //
  153. // NOTE: Be sure to edit SBHELP#.MEC to reflect any changes you make here!
  154.  
  155. #define KEY_DL_TAG          "Dd"   // For DLing Tagged Files Only
  156. #define KEY_VIEW            "Vv"   // For the V)iew Long Descriptions option
  157. #define KEY_LIST            "Ll"   // For List/Editing Tagged files
  158. #define KEY_EXIT            "Xx"   // For Exiting StarBar
  159.  
  160. ////////////////////////////////////////////////////////////////////////////
  161. // The following 3 HI_* defines determine the colour of the highlighted
  162. // file information. See COLOURS.TXT for a list of valid colour codes.
  163.  
  164. #define HI_FILENAME         "\x16\x01\x70"
  165. #define HI_FILESIZE         "\x16\x01\x71"
  166. #define HI_FILEDATE         "\x16\x01\x78"
  167.  
  168. ////////////////////////////////////////////////////////////////////////////
  169. // The following 3 LO_* defines determine the colour of the lowlighted
  170. // file information. Again, see COLOURS.TXT for a list of colour codes.
  171.  
  172. #define LO_FILENAME         "\x16\x01\x0e"
  173. #define LO_FILESIZE         "\x16\x01\x05"
  174. #define LO_FILEDATE         "\x16\x01\x02"
  175.  
  176. ////////////////////////////////////////////////////////////////////////////
  177. // The ST_COL_DESC define determines the colour of the file description.
  178.  
  179. #define ST_COL_DESC         "\x16\x01\x03"
  180.  
  181. ////////////////////////////////////////////////////////////////////////////
  182. // The ST_TAG define determines the colour of the "File Tagged" indicator,
  183. // as well as the character to show the file is tagged:
  184. //
  185. // "\x16\x01\x0e+"
  186. //  \__________/^
  187. //     Yellow   |
  188. //              ----> Char "+" is the tag indicator
  189.  
  190. #define ST_TAG              "\x16\x01\x0e+"
  191.  
  192. ////////////////////////////////////////////////////////////////////////////
  193. // The next 2 defines determine the colour of the command line brackets,
  194. // as well as the brackets themselves, and the colour the command will
  195. // appear in
  196. //
  197. //         ST_LBRACKET                              ST_RBRACKET
  198. //
  199. // "\x16\x01\x0f[\x16\x01\x0a"                     "\x16\x01\x0f]"
  200. //  \__________/^\__________/                       \__________/^
  201. //      White   |   Green - Command Colour              White   |
  202. //Bracket Colour|                                               ---> Right
  203. //              ----> Left bracket to use                            bracket
  204. //
  205.  
  206. #define ST_LBRACKET         "\x16\x01\x0f[\x16\x01\x0a"
  207. #define ST_RBRACKET         "\x16\x01\x0f]"
  208.  
  209.  
  210. /////////////////////////Your DONE Stop Here!!!/////////////////////////////
  211.  
  212.  
  213. // The rest of the KEY_* defines are for the command line display only. They
  214. // are not hotkeys shouldn't be change.
  215.  
  216. #define KEY_HELP            "?"               // For Help
  217. #define KEY_DOWN            "2"               // For Down
  218. #define KEY_UP              "8"               // For Up
  219. #define KEY_PGDN            "3"               // For PageDown
  220. #define KEY_PGUP            "9"               // For PageUp
  221. #define KEY_TAG             str_st_com_space  // For Space Bar Tagging
  222. #define KEY_DL_CURR         str_st_com_enter  // For DLing current file
  223.  
  224. #define ST_COL_INVISIBLE    "\x16\x01\x10\x80"    // For hiding cursor
  225. #define DESCRIPT            47                    // Max description line
  226. #define FF_OFFLINE          0x02                  // Flag for file offline
  227. #define this_task           uitostr(id.task_num)  // Task number
  228.  
  229.  
  230. string longpadleft(long: i, int: len, int: ch)
  231. {
  232.         string: itos;
  233.         string: rc;
  234.  
  235.         itos:=ltostr(i);
  236.  
  237.         rc:=strpad("", len - strlen(itos), ch);
  238.  
  239.         return rc + itos;
  240. }
  241.  
  242. void bit_date_to_stamp(unsigned long: bit_date, ref struct _stamp: udate)
  243. {
  244.   udate.time.hh    := (bit_date & 0xf8000000) shr 27;
  245.   udate.time.mm    := (bit_date & 0x07e00000) shr 21;
  246.   udate.time.ss    := (bit_date & 0x001f0000) shr 15;
  247.   udate.date.year  := (bit_date & 0xfe00) shr 9;
  248.   udate.date.month := (bit_date & 0x01e0) shr 5;
  249.   udate.date.day   := (bit_date & 0x001f);
  250. }
  251.  
  252. unsigned long hextoul(string: str_p, int: offset)
  253. {
  254.   unsigned long : wide_long;
  255.  
  256.   wide_long := (unsigned char)str_p[offset+3];
  257.   wide_long := (wide_long shl 8) + (unsigned char)str_p[offset+2];
  258.   wide_long := (wide_long shl 8) + (unsigned char)str_p[offset+1];
  259.   return (wide_long shl 8) + (unsigned char)str_p[offset];
  260. }
  261.  
  262. unsigned int hextoui(string: str_p, int: offset)
  263. {
  264.   unsigned int: wide_int;
  265.  
  266.   wide_int := (unsigned char)str_p[offset+1];
  267.   return (wide_int shl 8) + (unsigned char)str_p[offset];
  268. }
  269.  
  270. // The following was taken from XGETCH.MH originally my Matt Scott but
  271. // later modified by Don Reid....Stripped it down a bit for use with
  272. // StarBar...Removed comments to save space.
  273.  
  274.  
  275. #define X_INVALID  255
  276. #define X_EMPTY      0
  277. #define XGETCH_ANSI_TRIES       500
  278.  
  279. int ___XGETCH_ANSI_WAIT_LOOP_FAIL()
  280. {
  281.     int: tries;
  282.  
  283.     for (tries:=0;
  284.          (tries < XGETCH_ANSI_TRIES) AND (kbhit() = FALSE);
  285.          tries := tries+1)
  286.     {
  287.         ;
  288.     }
  289.  
  290.     tries := (kbhit() = FALSE);
  291.     return tries;
  292. }
  293.  
  294. char: _xgetchinput;
  295.  
  296. char xgetch()
  297. {
  298.     char: tempch;
  299.     int : pos;
  300.     string: results;
  301.  
  302.     if (_xgetchinput <> X_EMPTY) {
  303.         tempch := _xgetchinput;
  304.         _xgetchinput := X_EMPTY;
  305.         return tempch;
  306.     }
  307.  
  308.     tempch := getch();
  309.  
  310.     if (tempch = 0) {
  311.         _xgetchinput := getch();
  312.         return tempch;
  313.     }
  314.  
  315.     if (tempch = 27) {
  316.  
  317.         if (___XGETCH_ANSI_WAIT_LOOP_FAIL())
  318.         {
  319.             return 27;
  320.         }
  321.         tempch := getch();
  322.         if (tempch <> '[') {
  323.             _xgetchinput := tempch;
  324.             return 27;
  325.         }
  326.         if (___XGETCH_ANSI_WAIT_LOOP_FAIL())
  327.         {
  328.             _xgetchinput := '[';
  329.             return 27;
  330.         }
  331.         tempch := getch();
  332.  
  333.         pos := stridx( "\x48\x4b\x41\x42\x44\x43",1,tempch);
  334.         if (pos <> 0)
  335.         {
  336.             results := "\x47\x4f\x48\x50\x4b\x4d";
  337.             _xgetchinput := results[pos];
  338.             return 0;
  339.         }
  340.         if (tempch = 'O') {
  341.  
  342.             if (___XGETCH_ANSI_WAIT_LOOP_FAIL()) {
  343.                 _xgetchinput := X_INVALID;
  344.                 return 0;
  345.             }
  346.  
  347.             tempch := getch();
  348.             pos := stridx( "\x72\x71\x6e",1,tempch);
  349.             if (pos <> 0)
  350.             {
  351.                 results := "\x47\x4f\x48";
  352.                 _xgetchinput := results[pos];
  353.                 return 0;
  354.             }
  355.         }
  356.         _xgetchinput := X_INVALID;
  357.         return 0;
  358.     }
  359.     return tempch;
  360. }
  361.  
  362.